import store from '@/store/index.js';
import {
	wxlogin,
	getApiUserInfo,
	getAllDict,
} from '@/http/login/userLogin.js'
// 微信授权登录
export const loginByOpenid = () => {
	return new Promise((resolve, reject) => {
		// byOpenidLogin(
		// 	(res) => {
		// 		resolve(res)
		// 	},
		// 	(erro) => {
		// 		console.log(erro)
		// 		reject(erro)
		// 	})
		// 以上注释为更换登录方法 链接如下
		// https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801
		// 检测code 是否过期
		uni.login({
			success (login) {
				let code = login.code;
				uni.setStorageSync('code', code);
				//整合数据请求登录
				wxlogin('/mall-cloud-system/authService/xcxLoginByUnionId', { code }).then(res => {
					resolve(res)
				}).catch((erro) => {
					reject(erro)
				})
			},
			fail (erro) {
				reject(erro)
			}
		})
	})
}
export const byOpenidLogin = (callback, erroFun) => {
	// uni.login({
	// 	success (login) {
	// 		uni.getUserInfo({
	// 			success (res) {
	// 				// 调用顺序有误会影响微信code时效   
	// 				let userInfo = JSON.parse(res.rawData);
	// 				uni.setStorageSync('catchUserInfo', userInfo);
	// 				uni.setStorageSync('catchUIEncryptedData', res.encryptedData);
	// 				uni.setStorageSync('catchUIIv', res.iv);
	// 				let code = login.code;
	// 				let nickName = userInfo.nickName;
	// 				let gender = userInfo.gender;
	// 				let avatarUrl = userInfo.avatarUrl;
	// 				let uiIv = uni.getStorageSync('catchUIIv');
	// 				let uiEncryptedData = uni.getStorageSync('catchUIEncryptedData');
	// 				let relationId = uni.getStorageSync('shareCode').shareCode || '';
	// 				//整合数据请求登录
	// 				wxlogin('/mall-cloud-system/authService/xcxLoginByUnionId', { code, uiIv, uiEncryptedData, avatarUrl, gender, nickName, relationId }).then(res => {
	// 					callback(res)
	// 				}).catch((erro) => {
	// 					erroFun(erro)
	// 				})
	// 			},
	// 			fail (erro) {
	// 				erroFun(erro)
	// 			}
	// 		})
	// 	},
	// 	fail (erro) {
	// 		erroFun(erro)
	// 	}
	// })
}
// 用户首次登录	 xcxLoginByUnionId 失败后处理的
export const loginByMobile = (callback) => {
	// 以下注释的为旧的登录逻辑
	function mobileFun (code) {
		// 后台返回的unionId
		let unionId = uni.getStorageSync('unionId');
		// 获取手机获得的
		let iv = uni.getStorageSync('cashIv');
		let encryptedData = uni.getStorageSync('cashEncryptedData');
		// let uiIv = uni.getStorageSync('catchUIIv');
		// let uiEncryptedData = uni.getStorageSync('catchUIEncryptedData');
		// let userInfo = uni.getStorageSync('catchUserInfo');
		// let relationId = uni.getStorageSync('shareCode').shareCode || '';
		// let nickName = userInfo.nickName;
		// let gender = userInfo.gender;
		// let avatarUrl = userInfo.avatarUrl;
		let UserProfile = uni.getStorageSync('UserProfile');
		wxlogin('/mall-cloud-system/authService/xcxLoginByMobile', {
			unionId,
			// uiIv,
			// uiEncryptedData,
			iv,
			encryptedData,
			code,
			// nickName,
			// gender,
			// avatarUrl,
			// relationId
			...UserProfile
		}).then(res => {
			callback(res)
		}).catch((res) => {
			callback(res)
		})
	}
	uni.checkSession({
		success (res) {
			console.log(res, '1')
			//session_key 未过期，并且在本生命周期一直有效
			let code = uni.getStorageSync('code');
			mobileFun(code)
		},
		fail (res) {
			console.log(res, '2')
			// session_key 已经失效，需要重新执行登录流程
			uni.login({
				success (res) {
					mobileFun(res.code)
				},
				fail () {
					uni.showToast({
						title: '登录失败，请重试！',
						icon: 'none'
					})
				}
			})
		}
	})
}
// 账号密码登录
// export const loginByuserName = () => {
// 	return new Promise((resolve, reject) => {
// 		loginUsername(user).then(res => {
// 			if (res.code == 200) {
// 				//登录成功之后 存token
// 				let token = res.data;
// 				store.commit('SET_TOKEN', token);
// 				store.commit('UPDATE_LOGIN_STATUS', true);
// 				//登录成功后 用户会话、socket 初始化
// 				uni.$emit('sessionListInit', token.a_token);
// 				getUserInfoFun().then((result => {
// 					store.commit('SET_USERINFO', result)
// 				}))
// 				resolve(res)
// 				// 弹框
// 			} else {
// 				uni.showToast({
// 					title: res.msg,
// 					icon: 'none',
// 					duration: 5000
// 				});

// 			}
// 		})
// 	})
// }
//获取用户信息
export const getUserInfoFun = () => {
	return new Promise((resolve, reject) => {
		Promise.all([getApiUserInfo()]).then(res => {
			let data1 = res[0].data;
			resolve(data1)
		})
	})
}
// 获取字典
export const getAllDictData = () => {
	getAllDict().then(res => {
		if (res.code == 200) {
			store.commit('SET_DICT', res.data)
			uni.setStorageSync("Dict", res.data)
		}
	}).catch(error => {
		console.log(error)
	})
}